home *** CD-ROM | disk | FTP | other *** search
- // MetersView.cpp : implementation of the CMetersView class
- //
-
- #include "stdafx.h"
- #include "Meters.h"
-
- #include "MetersDoc.h"
- #include "MetersView.h"
- #include "ctwxdef.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // CMetersView
-
- IMPLEMENT_DYNCREATE(CMetersView, CFormView)
-
- BEGIN_MESSAGE_MAP(CMetersView, CFormView)
- //{{AFX_MSG_MAP(CMetersView)
- // NOTE - the ClassWizard will add and remove mapping macros here.
- // DO NOT EDIT what you see in these blocks of generated code!
- //}}AFX_MSG_MAP
- // Standard printing commands
- ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
- ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // CMetersView construction/destruction
-
- CMetersView::CMetersView()
- : CFormView(CMetersView::IDD)
- {
- //{{AFX_DATA_INIT(CMetersView)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- // TODO: add construction code here
-
- }
-
- CMetersView::~CMetersView()
- {
- }
-
- void CMetersView::DoDataExchange(CDataExchange* pDX)
- {
- CFormView::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CMetersView)
- DDX_Control(pDX, IDC_RTMETERXCTRL1, m_RTMeter1);
- DDX_Control(pDX, IDC_RTMETERXCTRL2, m_RTMeter2);
- DDX_Control(pDX, IDC_RTMETERXCTRL3, m_RTMeter3);
- //}}AFX_DATA_MAP
- }
-
- BOOL CMetersView::PreCreateWindow(CREATESTRUCT& cs)
- {
- // TODO: Modify the Window class or styles here by modifying
- // the CREATESTRUCT cs
-
- return CFormView::PreCreateWindow(cs);
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CMetersView printing
-
- BOOL CMetersView::OnPreparePrinting(CPrintInfo* pInfo)
- {
- // default preparation
- return DoPreparePrinting(pInfo);
- }
-
- void CMetersView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
- {
- // TODO: add extra initialization before printing
- }
-
- void CMetersView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
- {
- // TODO: add cleanup after printing
- }
-
- void CMetersView::OnPrint(CDC* pDC, CPrintInfo*)
- {
- // TODO: add code to print the controls
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CMetersView diagnostics
-
- #ifdef _DEBUG
- void CMetersView::AssertValid() const
- {
- CFormView::AssertValid();
- }
-
- void CMetersView::Dump(CDumpContext& dc) const
- {
- CFormView::Dump(dc);
- }
-
- CMetersDoc* CMetersView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMetersDoc)));
- return (CMetersDoc*)m_pDocument;
- }
- #endif //_DEBUG
-
- /////////////////////////////////////////////////////////////////////////////
- // CMetersView message handlers
-
-
- void CMetersView::BuildGraph1()
- {
-
- m_RTMeter1.SetMeterType (RTMETER_NEEDLE);
- m_RTMeter1.SetMeterNumChannels (2);
-
- //CENTER AND DIAMETER
- m_RTMeter1.SetMeterCenterX (0.5);
- m_RTMeter1.SetMeterCenterY (0.4);
- m_RTMeter1.SetMeterDiameter(m_RTMeter1.GetMeterDiameter() + 0.15);
-
- //ARC
- m_RTMeter1.SetMeterStartArc(135);
- m_RTMeter1.SetMeterStopArc(45);
-
-
- //NEEDLE
- m_RTMeter1.SetMeterNeedleStyle (NEEDLE_SHORTF);
-
- //COLORS
- m_RTMeter1.SetPlotBackgroundColor (RGB_BLACK);
- m_RTMeter1.SetWindowBackgroundColor (RGB_BLACK);
-
- //SCALING
- m_RTMeter1.SetMeterScaleMin (2.0);
- m_RTMeter1.SetMeterScaleMax (5.0);
-
- //ALARM ARCS
- m_RTMeter1.SetMeterLowAlarmStop (2.6);
- m_RTMeter1.SetMeterHighAlarmStart (4.8);
-
- //arc line
- m_RTMeter1.SetMeterArcEnable(FALSE);
- m_RTMeter1.SetMeterLineColor (RGB_WHITE);
-
-
- //tick attributes
- m_RTMeter1.SetMeterTickStep (0.5);
- m_RTMeter1.SetMeterMinorTicks (4);
- m_RTMeter1.SetMeterTickPosition (POS_OUTSIDE);
- m_RTMeter1.SetMeterTickLabelsPrecision (1);
- m_RTMeter1.SetMeterTickLabelsPosition (POS_OUTSIDE);
- m_RTMeter1.SetMeterTickLabelsColor(RGB_WHITE);
-
- //channel colors
- m_RTMeter1.SetMeterChannelColor (0, RGB_WHITE);
- m_RTMeter1.SetMeterChannelColor (1, RGB_LIGHTRED);
-
- //ALARMS
- m_RTMeter1.SetMeterNormalAlarmColor (RGB_BLACK);
- m_RTMeter1.SetMeterAlarmArcThickness (m_RTMeter1.GetMeterAlarmArcThickness() / 4.0);
-
- //timer
- m_RTMeter1.SetEnableInternalTimer(TRUE);
-
- }
-
- void CMetersView::BuildGraph2()
- {
- m_RTMeter2.SetMeterType (RTMETER_ARC);
-
- //arcs
- m_RTMeter2.SetMeterStartArc(270);
- m_RTMeter2.SetMeterStopArc(90);
-
- //title
- m_RTMeter2.SetTitleString (TITLE1, "Pie Meter");
-
- //timer
- m_RTMeter2.SetEnableInternalTimer(TRUE);
-
- //size and position
- m_RTMeter2.SetMeterDiameter(m_RTMeter2.GetMeterDiameter() + 0.3);
- m_RTMeter2.SetMeterCenterX (0.2);
-
- //tick marks
- m_RTMeter2.SetMeterTickPosition (POS_OUTSIDE);
-
- //arc colors
- m_RTMeter2.SetMeterNormalAlarmColor (RGB_WHITE);
- m_RTMeter2.SetMeterLowAlarmColor (RGB_LIGHTBLUE);
- m_RTMeter2.SetMeterHighAlarmColor (RGB_MAGENTA);
-
- }
-
- void CMetersView::BuildGraph3()
- {
- m_RTMeter3.SetMeterType (RTMETER_PIE);
- m_RTMeter3.SetMeterStartArc(0);
- m_RTMeter3.SetMeterStopArc(345);
-
- m_RTMeter3.SetMeterScaleMin (0.0);
- m_RTMeter3.SetMeterScaleMax (100.0);
- m_RTMeter3.SetMeterTickStep (25.0);
-
- //title
- m_RTMeter3.SetTitleString (TITLE1, "Arc Meter");
- m_RTMeter3.SetTitleFontSize (TITLE1, 10);
- m_RTMeter3.SetTitleColor (TITLE1, RGB_RED);
- m_RTMeter3.SetTitleFontStyle (TITLE1, TEXT_BOLD | TEXT_ITAL);
-
- //timer
- m_RTMeter3.SetEnableInternalTimer(TRUE);
-
- //diameter
- m_RTMeter3.SetMeterDiameter(m_RTMeter3.GetMeterDiameter() + 0.15);
-
- //channel colors
- m_RTMeter3.SetMeterChannelColor (0, RGB_WHITE);
- m_RTMeter3.SetMeterChannelColor (1, RGB_CYAN);
-
- //arc limits
- m_RTMeter3.SetMeterLowAlarmStart (0.0);
- m_RTMeter3.SetMeterLowAlarmStop (10.0);
- m_RTMeter3.SetMeterHighAlarmStart (90.0);
- m_RTMeter3.SetMeterHighAlarmStop (100.0);
-
-
- }
-
- BEGIN_EVENTSINK_MAP(CMetersView, CFormView)
- //{{AFX_EVENTSINK_MAP(CMetersView)
- ON_EVENT(CMetersView, IDC_RTMETERXCTRL1, 1 /* OnInternalTimer */, OnInternalTimerRtmeterxctrl1, VTS_NONE)
- ON_EVENT(CMetersView, IDC_RTMETERXCTRL2, 1 /* OnInternalTimer */, OnInternalTimerRtmeterxctrl2, VTS_NONE)
- ON_EVENT(CMetersView, IDC_RTMETERXCTRL3, 1 /* OnInternalTimer */, OnInternalTimerRtmeterxctrl3, VTS_NONE)
- //}}AFX_EVENTSINK_MAP
- END_EVENTSINK_MAP()
-
- void CMetersView::OnInitialUpdate()
- {
- CFormView::OnInitialUpdate();
-
- BuildGraph1();
- BuildGraph2();
- BuildGraph3();
- }
-
- void CMetersView::OnInternalTimerRtmeterxctrl1()
- {
- double rMin = min(m_RTMeter1.GetMeterScaleMin(), m_RTMeter1.GetMeterScaleMax());
- double rMax = max(m_RTMeter1.GetMeterScaleMin(), m_RTMeter1.GetMeterScaleMax());
- double rData[MAX_RTMETERX_NEEDLES];
- double rCenter = rMin + (rMax - rMin) /2;
- double rRange = (rMin - rMax);
- int i;
- for (i=0; i < m_RTMeter1.GetMeterNumChannels(); i++)
- {
- rData[i] = rCenter + rRange * 0.8 * ( 0.5 - ((double) rand() / (double) RAND_MAX));
- if (rData[i] > rMax)
- rData[i] = rMax;
- else
- if (rData[i] < rMin)
- rData[i] = rMin;
- }
- m_RTMeter1.UpdateDynData (rData);
-
- }
-
- void CMetersView::OnInternalTimerRtmeterxctrl2()
- {
- double rMin = min(m_RTMeter2.GetMeterScaleMin(), m_RTMeter2.GetMeterScaleMax());
- double rMax = max(m_RTMeter2.GetMeterScaleMin(), m_RTMeter2.GetMeterScaleMax());
- double rData[MAX_RTMETERX_NEEDLES];
- double rCenter = rMin + (rMax - rMin) /2;
- double rRange = (rMin - rMax);
- int i;
- for (i=0; i < m_RTMeter2.GetMeterNumChannels(); i++)
- {
- rData[i] = rCenter + rRange * 0.8 * ( 0.5 - ((double) rand() / (double) RAND_MAX));
- if (rData[i] > rMax)
- rData[i] = rMax;
- else
- if (rData[i] < rMin)
- rData[i] = rMin;
- }
- m_RTMeter2.UpdateDynData (rData);
-
-
- }
-
- void CMetersView::OnInternalTimerRtmeterxctrl3()
- {
- double rMin = min(m_RTMeter3.GetMeterScaleMin(), m_RTMeter3.GetMeterScaleMax());
- double rMax = max(m_RTMeter3.GetMeterScaleMin(), m_RTMeter3.GetMeterScaleMax());
- double rData[MAX_RTMETERX_NEEDLES];
- double rCenter = rMin + (rMax - rMin) /2;
- double rRange = (rMin - rMax);
- int i;
- for (i=0; i < m_RTMeter3.GetMeterNumChannels(); i++)
- {
- rData[i] = rCenter + rRange * 0.8 * ( 0.5 - ((double) rand() / (double) RAND_MAX));
- if (rData[i] > rMax)
- rData[i] = rMax;
- else
- if (rData[i] < rMin)
- rData[i] = rMin;
- }
- m_RTMeter3.UpdateDynData (rData);
-
-
- }
-